﻿/*
 * Copyright (c) 2023 Proton AG
 *
 * This file is part of ProtonVPN.
 *
 * ProtonVPN is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * ProtonVPN is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with ProtonVPN.  If not, see <https://www.gnu.org/licenses/>.
 */

using ProtonVPN.Account;
using ProtonVPN.Config.Url;
using ProtonVPN.Core.Servers;
using ProtonVPN.StatisticalEvents.Contracts;
using ProtonVPN.Translations;

namespace ProtonVPN.Modals.Upsell;

public class CountryUpsellModalViewModel : UpsellModalViewModel
{
    private string _countryCode;
    public string Title => Translation.Get("Upsell_Country_Title");

    public string Bullet1
    {
        get
        {
            int totalCountries = ServerManager.GetCountries().Count;
            return string.Format(Translation.GetPlural("Upsell_Country_Bullet1", totalCountries), totalCountries);
        }
    }

    public string CountryCode
    {
        get => _countryCode;
        set => Set(ref _countryCode, value);
    }

    protected override ModalSources ModalSource { get; } = ModalSources.Countries;

    public CountryUpsellModalViewModel(ISubscriptionManager subscriptionManager,
        ServerManager serverManager,
        IActiveUrls urls,
        IUpsellUpgradeAttemptStatisticalEventSender upsellUpgradeAttemptStatisticalEventSender,
        IUpsellDisplayStatisticalEventSender upsellDisplayStatisticalEventSender)
        : base(subscriptionManager, serverManager, urls, upsellUpgradeAttemptStatisticalEventSender,
              upsellDisplayStatisticalEventSender)
    {
    }

    public override void BeforeOpenModal(dynamic countryCode)
    {
        CountryCode = countryCode;
        
        SendDisplayStatisticalEvent();
    }
}